package tedu.cn.tedu.oop2;
/*本类用于测试静态代码块*/
public class TestStatic3 {
    public static void main(String[] args) {
        Person p=new Person();
        Person p2=new Person();
        p.play();
    }
}
class Person {
    /*静态代码块:static{}
    * 1,位置:类里方法外
    * 2,执行时机:静态代码块也属于静态资源,随着类的加载而加载,优先于对象加载
    * 并且静态资源只需要加载一次
    * 3,作用:用于加载那些需要第一时间就加载,并且只加载一次的资源,常用来初始化
    * 执行顺序:静态代码块->构造代码块->构造方法[对象创建成功]->普通方法->局部代码块*/
    static {
        System.out.println("我是一个静态代码块");
    }
    {/*构造代码块:
    1,位置:类里方法外
    2,执行时机:创建对象时执行,并且优先于构造方法执行
    3,作用:用于提取所有构造方法的共性功能*/
        System.out.println("我是构造代码块");
    }
    public void play(){
        System.out.println("我是一个普通方法");
        /*局部代码块:
        * 1,位置方法里
        * 2,执行时机:当局部代码块所处的方法被调用时才会执行
        * 3,作用:用于限制变量的作用范围*/
        {
            System.out.println("我是一个局部代码块");
        }
    }
    public Person(){
        System.out.println("我是一个无参构造");
    }
}
